package com.fjec.info.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjec.common.protocol.JsonResult;
import com.fjec.common.view.InfoRotationVO;
import com.fjec.common.view.RpcReturnPage;
import org.springframework.web.bind.annotation.*;

import com.fjec.info.service.IInfoRotationService;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 026.轮播图表 前端控制器
 * </p>
 *
 * @author admin
 * @since 2020-12-18
 */
@RestController
@RequestMapping("/")
public class InfoRotationController {

    @Resource
    private IInfoRotationService service;

    /**
     * 根据市场编码获取轮播图 markCode=1则为首页轮播图
     *
     * @param markCode
     * @return
     */
    @GetMapping("/n/rotation/list")
    public JsonResult getInfoRotationByMarkCode(@RequestParam Integer markCode) {
        List<Map<String, Object>> mapList = service.getInfoRotationByMarkCode(markCode);
        return JsonResult.success()
                .data(mapList)
                .build();
    }

    /**
     * 获取首页轮播图
     *
     * @return
     */
    @GetMapping("/n/rotation/main/page")
    public JsonResult getMainPageRotation() {
        List<Map<String, Object>> mapList = service.getMainPageRotation();
        return JsonResult.success()
                .data(mapList)
                .build();
    }

    /**
     * 根据市场编码获取轮播图 markCode=1则为首页轮播图
     *
     * @param markCode
     * @return
     */
    @GetMapping("/rotation/list")
    public List<Map<String, Object>> rpcGetInfoRotationByMarkCode(@RequestParam Integer markCode) {
        return service.getInfoRotationByMarkCode(markCode);
    }

    /**
     * 后台查询轮播图列表
     *
     * @param current   分页条件
     * @param size      分页条件
     * @param markCode  市场编码 市场编码=1则为首页轮播图
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return
     * @throws Exception
     */
    @GetMapping("/rotation/get/page")
    public RpcReturnPage<InfoRotationVO> rpcGetInfoRotationPage(@RequestParam long current,
                                                                @RequestParam long size,
                                                                @RequestParam(required = false) Integer markCode,
                                                                @RequestParam(required = false) String startTime,
                                                                @RequestParam(required = false) String endTime) throws Exception {
        Page page = new Page(current, size);
        return service.rpcGetInfoRotationPage(page, markCode, startTime, endTime);
    }

    /**
     * 后台保存或更新轮播图信息
     *
     * @param id       主键Id 为空则为更新
     * @param markCode 市场编码 首页为1
     * @param title    标题
     * @param picId    轮播图Id
     * @param rotationPicUrl   轮播图Url
     * @param linked   是否跳转
     * @param rotationLinkUrl  跳转Url
     * @param sort     排序
     * @param display  是否显示 0=不显示 1=显示
     * @return
     */
    @PostMapping("/rotation/save/or/update")
    public boolean rpcSaveOrUpdateInfoRotation(@RequestParam(required = false) Long id,
                                               @RequestParam Integer markCode,
                                               @RequestParam String title,
                                               @RequestParam Long picId,
                                               @RequestParam String rotationPicUrl,
                                               @RequestParam Integer linked,
                                               @RequestParam String rotationLinkUrl,
                                               @RequestParam Integer sort,
                                               @RequestParam Integer display) {
        boolean result = service.rpcSaveOrUpdateInfoRotation(id, markCode, title, picId, rotationPicUrl, linked, rotationLinkUrl, sort, display);
        if (markCode == 1) {
            service.cacheMainPageRotation();
        }
        return result;
    }

    /**
     * 后台根据Id获取详细信息
     *
     * @param id
     * @return
     */
    @GetMapping("/rotation/get")
    public InfoRotationVO rpcGetInfoRotationById(@RequestParam Long id) throws Exception {
        return service.rpcGetInfoRotationById(id);
    }

    /**
     * 根据markCode查询并根据sort排序
     *
     * @param markCode
     * @return
     */
    @GetMapping("/rotation/get/by/markCode/sort")
    public List<Map<String, Object>> rpcGetInfoRotationByMarkCodeAndSort(@RequestParam Integer markCode) {
        return service.getInfoRotationByMarkCodeAndSort(markCode);
    }

    /**
     * 后台根据Id获取详细信息
     *
     * @param id
     * @return
     */
    @PostMapping("/rotation/del")
    public boolean rpcDelInfoRotation(@RequestParam Long id) {
        return service.rpcDelInfoRotation(id);
    }

}
